package persistence.transferPOJOs.produkte;

import java.sql.Date;

import javax.servlet.Servlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import persistence.dataAccessObjects.interfaces.IRating;
import utils.ServletUtilities;




public class Zigarre extends Produkt implements IRating,java.io.Serializable {

	private String fillertype;
	private String herkunftsland;
	private int packungsgroesse;

	public Zigarre(){}
	
	public Zigarre(int id, String bezeichnung, String beschreibung,
			String hersteller, java.sql.Date herstellungsdatum, String imgURL,
			String anbieter, String fillertype,
			String herkunftsland, int packungsgroesse, float rating) {
		super(id, bezeichnung, beschreibung, hersteller, herstellungsdatum,imgURL, anbieter, rating);
		this.fillertype 		= fillertype;
		this.herkunftsland 		= herkunftsland;
		this.packungsgroesse 	= packungsgroesse;
		this.type				= ProductType.ZIGARRE;
	}

	/**
	 * Erzeugt Kopie mit Daten von Parameter-Instanz.
	 * @param source Datenquelle.
	 * @return Neue Instanz.
	 */
	public static Zigarre generateCopy(final Zigarre source) {
		// Neue Instanz mit Daten von Source erstellen.
		return new Zigarre(	source.id, source.bezeichnung, source.beschreibung, source.hersteller, 
							source.herstellungsdatum, source.imgURL, source.anbieter,
							source.fillertype, source.herkunftsland, source.packungsgroesse, source.rating);
	}
	
	public String getFillertype() {
		return fillertype;
	}

	public void setFillertype(String fillertype) {
		this.fillertype = fillertype;
	}

	public String getHerkunftsland() {
		return herkunftsland;
	}

	public void setHerkunftsland(String herkunftsland) {
		this.herkunftsland = herkunftsland;
	}

	public int getPackungsgroesse() {
		return packungsgroesse;
	}

	public void setPackungsgroesse(int packungsgroesse) {
		this.packungsgroesse = packungsgroesse;
	}
	

	@Override
	public float getRating() {
		
		return this.rating;
	}

	@Override
	public void setRating(float rating) {
		this.rating=rating;
		
	}
	
	@Override
	public String toString() {
		return super.toString() + "Zigarre [fillertype=" + fillertype + ", herkunftsland="
				+ herkunftsland + ", packungsgroesse=" + packungsgroesse
				+ ", rating=" + rating + "]";
	}

	/**
	 * Generiert aus Formulardaten eine Zigarreninstanz. Geht davon aus, dass Formularfelder namensgleich zu Klassenattributen sind.
	 * <br>Anmerkung: ID ist auto-increment, wird daher nicht in Formular abgefragt.
	 * @param request
	 * @param response
	 * @param userEmail
	 * @return Zigarreninstanz aus Formulardaten.
	 */
	public static Zigarre createZigarreFromFormData(HttpServletRequest request, HttpServletResponse response, String userEmail) {
		String bezeichnung		= request.getParameter("bezeichnung");
		String beschreibung		= request.getParameter("beschreibung");
		String hersteller		= request.getParameter("hersteller");
		
		Date herstellungsdatum	= ServletUtilities.getDateParameter(request, "herstellungsDatum", new Date(0));
		// imgURL-Angabe: Soll in Endversion hochgeladen werden, vorerst leer
		String imgURL 			= request.getParameter("imgURL"); // Integer.parseInt(request.getParameter("plz"));
		// Aus Cookie (ID des aktuell eingeloggten Users) abfragen
		String anbieter			= userEmail;
		String fillertype		= request.getParameter("fillertype");
		String herkunftsland	= request.getParameter("herkunftsland");
		int packungsgroesse		= ServletUtilities.getIntParameter(request, "packungsgroesse", 1);
		float rating			= 0;
		
		return (new Zigarre(	-1, bezeichnung, beschreibung, hersteller,
								herstellungsdatum, imgURL, anbieter,
								fillertype, herkunftsland, packungsgroesse, rating));
	}
}
